/*
 * @lc app=leetcode.cn id=215 lang=java
 *
 * [215] 数组中的第K个最大元素
 */

// @lc code=start

import java.util.PriorityQueue;

class Solution {
    public int findKthLargest(int[] nums, int k) {
        // 使用最小堆
        int len = nums.length;
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();

        // 将前k个元素放入最小堆
        for(int i = 0; i < k; i++) {
            minHeap.add(nums[i]);
        }

        // 遍历剩下的元素
        for(int i = k; i < len; i++) {
            // 如果当前元素大于堆顶元素，则将堆顶元素出堆，当前元素入堆
            if(nums[i] > minHeap.peek()) {
                minHeap.poll();
                minHeap.add(nums[i]);
            }
        }
        return minHeap.peek();

    }
}
// @lc code=end

